The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for optimizing energy consumption and application performance while scheduling tasks in a multi-core multi-threaded processor system.
Modern data processing systems typically include a plurality of processor cores. In some modern data processing systems, each processor core is multithreaded where multiple hardware-supported threads could be executing in parallel within the processor core. The number of threads depends on the design of the processor core, and usually presents a tradeoff between efficient utilization of processor core resources on one hand, and the requirements on the pipeline, cache size, and memory bandwidth on the other hand.
In these data processing systems, operating system software typically decides the assignment of application tasks to the various hardware threads available. Depending on the workload, the user or system administrator may also instruct the operating system to use only a specific number of hardware threads within a particular processor core to run particular application tasks, leaving the remaining hardware threads idle. However, tuning performance is not the only consideration for scheduling application processes on the available hardware threads. Energy consumption is another important consideration. In processors that allow the user to use dynamic voltage and frequency scaling (DVFS), the selection of the frequency of each processor core enables the user to fine-tune the tradeoff between performance and energy consumption.
The problem is how to schedule application tasks on the available processor cores and hardware threads so as to get the best tradeoff among application's individual performance and energy consumption.